// 一、定义所有的菜单数据

const allMenus: any[] = [
  {
    id: "0-0",
    key: "/Admin/Home",
    label: "首页",
  },
  {
    id: "0-1",
    key: "0-1",
    label: "系统管理",
    children: [
      {
        id: "0-1-0",
        key: "/Admin/Dept",
        label: "部门管理",
      },
      {
        id: "0-1-1",
        key: "/Admin/User",
        label: "用户管理",
      },
      {
        id: "0-1-2",
        key: "/Admin/Role",
        label: "角色管理",
      },
    ],
  },
  {
    id: "0-2",
    key: "0-2",
    label: "业务管理",
    children: [
      {
        id: "0-2-0",
        key: "/Admin/YuYue",
        label: "预约管理",
      },
      {
        id: "0-2-1",
        key: "/Admin/HuanZhe",
        label: "患者管理",
      },
      {
        id: "0-2-2",
        key: "/Admin/YuYue",
        label: "医护管理",
      },
    ],
  },
];

// 二、根据当前用户的权限，得到当前用户的菜单数据

export const getCurrentMenus = () => {
  //1、获取当前用户的权限：checkedKeys。
  const checkedKeys = JSON.parse(
    sessionStorage.getItem("checkedKeys") as string
  );
  // ["0-1-0","0-2-1","0-1-2"]

  //2、循环所有菜单数据，过滤出当前用户的菜单数据。

  const currMenus: any[] = [];//这个保存最终结果（当前用户的菜单数据）

  // 2.1)、循环父级
  allMenus.forEach((item) => {
    if(checkedKeys.includes(item.id)){
      //1）、添加父级
      const newParentItem = {...item};
      currMenus.push(newParentItem);

      // 2.2）、循环子级
      if(item.children){
        // 给父级添加children；
        newParentItem.children = [];
        // 循环子级
        item.children.forEach((sonItem:any)=>{
            if(checkedKeys.includes(sonItem.id)){   
              //把子级添加到父级的children。  
              newParentItem.children.push({...sonItem});
            }
        })
      }
    }
  });

  console.log("currMenus", currMenus);

  return currMenus;
};

export function getIdByKey(currentMenus:any[],key: string) {
  //  /Admin/Dept"

  let result = "";

  currentMenus.forEach((item) => {
    if (item.key === key) {
      result = item.id;
    }
    if (item.children) {
      item.children.forEach((sonItem: any) => {
        if (sonItem.key === key) {
          result = sonItem.id;
        }
      });
    }
  });
  return result;
}

// 返回值："1000" 表示 只有C的权限。如："1010 表示有 C和U的权限。
export function getCRUD(id: string) {
  let checkedKeys = JSON.parse(sessionStorage.getItem("checkedKeys") as string);

  let arr = checkedKeys.filter((item: any) => item.startsWith(id + "-")); //["0-1-0-C"]

  let str = "";

  if (arr.some((item: any) => item.endsWith("C"))) {
    str += "1";
  } else {
    str += "0";
  }
  if (arr.some((item: any) => item.endsWith("R"))) {
    str += "1";
  } else {
    str += "0";
  }
  if (arr.some((item: any) => item.endsWith("U"))) {
    str += "1";
  } else {
    str += "0";
  }
  if (arr.some((item: any) => item.endsWith("D"))) {
    str += "1";
  } else {
    str += "0";
  }

  return str;
}
